package com.anuragkapur.pie.teesandgraphs;
import com.anuragkapur.ds.tree.Node;
import java.util.Deque;
import java.util.LinkedList;
import java.util.List;
/**
* @author anuragkapur
*/
public class PreorderIterative {
public List<Integer> preorder(Node<Integer> root) {
List<Integer> result = new LinkedList<>();
Deque<Node<Integer>> deque = new LinkedList<>();
add(deque, root);
while (!deque.isEmpty()) {
Node<Integer> node = deque.pollFirst();
result.add(node.getData());
add(deque, node.getRight());
add(deque, node.getLeft());
}
return result;
}
private void add(Deque<Node<Integer>> deque, Node<Integer> node) {
if (node != null) {
deque.addFirst(node);
}
}
}